/*
 * Gavin Greeene
 * 2/25/2011
 * 
 * Constraint information is stored here.
 * The usertype was stored because a user can have multiple usertypes, 
 * but only a single usertype will be relivant in a single constraint info instance.
 * 
 */
package Constraint;

import user.User;
import user.UserType;
import data.ClassPreference;
import data.TimeSlot;

/**
 *  @author Gavin Greene
 *  @version 2/25/2011
 *  
 *  The Constraint info Class is a superclass for future types of Constraint Objects. 
 *  A constraint object will have one or more fields from the ConstraintInfo object, 
 *  and calls this constructor to initialize its fields.
 *  @see Violations
 *  
 */
public abstract class ConstraintInfo {
 
	private User myUser;
	private ClassPreference myClass;
	private TimeSlot myTime;
	private Violations myViolation;
	private UserType myUserType;
	
	/** 
	 * Protected constructor with all fields for subclasses to use
	 * Unprovided 
	 */
	protected ConstraintInfo(User theUser, ClassPreference theClassSlot, TimeSlot theTime, UserType theUserType, Violations theViolation){
		myUser = theUser;
		myClass = theClassSlot;
		myTime = theTime;
		myUserType = theUserType;
		myViolation = theViolation;
	}
	

	public UserType getUserType() { return myUserType; }
	public ClassPreference getClassSlot() { return myClass; } 
	public TimeSlot getTime() { return myTime; }
	public User getUser() { return myUser; } 
	public Violations getViolation() { return myViolation; }
	
	
	
	
}
